import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Objects;

/**
 * @author chihb
 * @create-time 2024/7/9 10:56
 * @description
 */

public class Author {
    private Long id;
    private String name;
    private Integer age;
    private String intro;

    private List<Book> books;

    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Author author = (Author) o;
        return Objects.equals(id, author.id) && Objects.equals(name, author.name) && Objects.equals(age, author.age) && Objects.equals(intro, author.intro) && Objects.equals(books, author.books);
    }

    @Override
    public int hashCode() {
        return Objects.hash(id, name, age, intro, books);
    }

    public Author() {
    }

    public Author(Long id, String name, Integer age, String intro, List<Book> books) {
        this.id = id;
        this.name = name;
        this.age = age;
        this.intro = intro;
        this.books = books;
    }

    /**
     * 获取
     * @return id
     */
    public Long getId() {
        return id;
    }

    /**
     * 设置
     * @param id
     */
    public void setId(Long id) {
        this.id = id;
    }

    /**
     * 获取
     * @return name
     */
    public String getName() {
        return name;
    }

    /**
     * 设置
     * @param name
     */
    public void setName(String name) {
        this.name = name;
    }

    /**
     * 获取
     * @return age
     */
    public Integer getAge() {
        return age;
    }

    /**
     * 设置
     * @param age
     */
    public void setAge(Integer age) {
        this.age = age;
    }

    /**
     * 获取
     * @return intro
     */
    public String getIntro() {
        return intro;
    }

    /**
     * 设置
     * @param intro
     */
    public void setIntro(String intro) {
        this.intro = intro;
    }

    /**
     * 获取
     * @return books
     */
    public List<Book> getBooks() {
        return books;
    }

    /**
     * 设置
     * @param books
     */
    public void setBooks(List<Book> books) {
        this.books = books;
    }

    public String toString() {
        return "Author{id = " + id + ", name = " + name + ", age = " + age + ", intro = " + intro + ", books = " + books + "}";
    }
    public static List<Author> getAuthors(){
        //数据初始化
        Author author = new Author ( 1L,"蒙多", 33, "一个从菜刀中明悟哲理的祖安人", null);
        Author author2 = new Author( 2L,"亚拉索", 15,"狂风也追逐不上:他的思考速度",null);
        Author author3 = new Author( 3L,"易",14,"是这个世界在限制他的思维", null);
        Author author4 = new Author( 3L,"易", 14,"是这个世界在限制他的思维",null);

        List<Book> books1 = new ArrayList<>();
        List<Book> books2 = new ArrayList<>();
        List<Book> books3 = new ArrayList<>();

        books1.add(new Book(1L, "刀的两侧是光明与黑暗", "哲学,爱情" ,88, "用一把刀划分了爱恨"));
        books1.add(new Book(2L,"一个人不能死在同一把刀下","个人成长,爱情" ,99, "讲述如何从失败中明悟真理"));
        books2.add(new Book(3L, "那风吹不到的地方" ,"哲学",85, "带你用思维去领略世界的尽头"));
        books2.add(new Book(3L,"那风吹不到的地方", "哲学",85, "带你用思维去领略世界的尽头"));
        books2.add(new Book(4L , "吹或不吹" ,"爱情,个人传记" ,56,"一个哲学家的恋爱观注定很难把他所在的时代理解"));
        books3.add(new Book(5L , "你的剑就是我的剑", "爱情",56,"无法想象一个武者能对他的伴侣这么的宽容"));
        books3.add(new Book(6L, "风与剑" ,"个人传记",100,"两个哲学家灵魂和肉体的碰撞会激起怎么样的火花呢?"));
        books3.add(new Book(6L,"风与剑","个人传记" ,100,"两个哲学家灵魂和肉体的碰撞会激起怎么样的火花呢?"));

        author.setBooks(books1);
        author2.setBooks (books2);
        author3.setBooks (books3);
        author4.setBooks(books3);

        List<Author> authorList = new ArrayList<>(Arrays.asList(author,author2,author3,author4));
        return authorList;
    }
}
